﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using EFramework.Web.TypeExtension;
using EFramework.Web.Configuration;

namespace  RzCorportativo.Views.Cadastros
{
    public partial class Fornecedor : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           
        }

        [WebMethod]
        public static object ListarCidade(string termo)
        {
            RzCorportativo.Lib.Cidade parans = new RzCorportativo.Lib.Cidade();
            if (termo.Contains(','))
            {
                int i = 0;
                termo.Split(',').ToList().ForEach(f =>
                {
                    if (i == 0)
                        parans.Nome = (f ?? string.Empty).TrimStart();
                    else if (i == 1)
                        parans.UF = new RzCorportativo.Lib.Uf()
                        {
                            UF = (f ?? string.Empty).ToUpper().TrimStart()
                        };
                    i += 1;
                });
            }
            else
                parans.Nome = termo;
            var lista = RzCorportativo.Lib.Cidade.Listar(parans);
            return lista.Select(s => new { value = s.Nome, label = s.Nome, CidadeId = s.CidadeId, Nome = s.Nome, UF = s.UF}).ToList();
        }

        protected void salvar_Click(object sender, EventArgs e)
        {
            Alert alert = new Alert("erroGeral", this);
            RzCorportativo.Lib.Fornecedor fornecedor = new RzCorportativo.Lib.Fornecedor();
            alert.AlertType = AlertType.Error;
            bool redirect = false;
            try
            {
                fornecedor.FornecedorId = IntExtension.Parse(this.FornecedorId.Value, 0);
                fornecedor.Nome = this.Nome.Text;
                fornecedor.Cnpj = this.Cnpj.Text.Replace(".", string.Empty).Replace("-", string.Empty).Replace("/", string.Empty);
                fornecedor.Email = this.Email.Text;
                fornecedor.Endereco = this.Endereco.Model;
                fornecedor.Telefone1 = MaskConfiguration.RemoveMask(this.Telefone1.Text, "telKeyDel");
                fornecedor.Telefone2 = MaskConfiguration.RemoveMask(this.Telefone2.Text, "telKeyDel");
                fornecedor.Telefone3 = MaskConfiguration.RemoveMask(this.Telefone3.Text, "telKeyDel");
                if (fornecedor.FornecedorId == 0 && this.FornecedorId.Value.Length > 0) 
                    alert.Add("fornecedorId", "Código de fornecedor inválido. <br />Selecione um fornecedor válido");
                if (!RzCorportativo.Lib.Util.ValidarCnpj(fornecedor.Cnpj)) 
                    alert.Add("cnpj", "Cnpj inválido");
                if (this.Email.Text.Length > 0 && !EFramework.Web.Validation.ServiceValidation.EmailIsValid(fornecedor.Email, true)) 
                    alert.Add("email", "E-mail inválido");
                if (string.IsNullOrEmpty(fornecedor.Telefone1) && string.IsNullOrEmpty(fornecedor.Telefone2) && string.IsNullOrEmpty(fornecedor.Telefone3)) 
                    alert.Add("semTelefone", "Preencha ao menos um telefone");
                if (string.IsNullOrEmpty(this.Endereco.Model.Logradouro)) 
                    alert.Add("logradouro", "Logradouro inválido");
                if (this.Endereco.Model.CidadeId < 0) 
                    alert.Add("cidade", "Cidade inválida");
                if (this.Endereco.Model.EnderecoId == -1)
                    alert.Add("fornecedorId", "Código de endereço inválido. <br />Selecione um endereço válido");
                if (fornecedor.Salvar())
                {
                    alert.AlertType = AlertType.Success;
                    alert.Add("success", "Item salvo com sucesso");
                    redirect = true;
                }
                else
                    alert.Add("erro", "Falha ao tentar salvar o item");
            }
            catch (Exception ex)
            {
                alert.Add("exception", ex.Message);
            }
            finally
            {
                if (alert.HasMessage)
                    alert.Show();
            }
            if (redirect)
                this.Response.Redirect(this.ResolveUrl("~/Views/Consulta/Fornecedores.aspx?op=s"));
        }
    }
}